#include <iostream>
#include <fstream>
#include "SortingConfig.h"

using namespace std;

void swap(int &a, int &b) {
    int t=a;
    a = b;
    b = t;
}

void bubble_sort(int *arr, int n) {
    // 冒泡排序算法
    bool flag;
    for (int i=0; i<n; ++i) {
        flag = false;
        for(int j=0; j<n-i-1; ++j) {
            // 比较相邻两个元素的大小，
            // 将较大的数据逐步往后移动
            // 将较小的数据逐步往前移动
            if (arr[j] > arr[j+1]) {
                flag = true;
                swap(arr[j], arr[j+1]);
            }
        }
        // 如果当前已经有序，则提前停止
        if (!flag) break;
    }
}

int main(int argc, char *argv[]) {
    cout << "Sorting Version: " << Sorting_VERSION_MAJOR 
         << "." << Sorting_VERSION_MINOR<<endl;
    // 参数解析
    ifstream input;
    if (argc > 1) {
        input.open(argv[1], ios::in);
    }

    int n;
    if (argc > 1) input >> n;
    else cin >> n;
    int arr[n];
    if (argc > 1){
        for(int i=0; i<n;++i) input >> arr[i];
        input.close();
    } else {
        for(int i=0; i<n;++i) cin >> arr[i];
    }
    // 排序
    bubble_sort(arr, n);

    for(int i=0; i<n; ++i) {
        cout << arr[i] << " ";
    }
    cout << endl;

    return 0;
}